/*!-----------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * monaco-languages version: 1.6.0(858705e74270e53559a241fdee187e7a6ae53b23)
 * Released under the MIT license
 * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md
 *-----------------------------------------------------------------------------*/
define("vs/basic-languages/css/css", ["require", "exports"], function (e, t) {
  "use strict";
  Object.defineProperty(t, "__esModule", { value: !0 }),
    (t.conf = {
      wordPattern: /(#?-?\d*\.\d\w*%?)|((::|[@#.!:])?[\w-?]+%?)|::|[@#.!:]/g,
      comments: { blockComment: ["/*", "*/"] },
      brackets: [
        ["{", "}"],
        ["[", "]"],
        ["(", ")"],
      ],
      autoClosingPairs: [
        { open: "{", close: "}", notIn: ["string", "comment"] },
        { open: "[", close: "]", notIn: ["string", "comment"] },
        { open: "(", close: ")", notIn: ["string", "comment"] },
        { open: '"', close: '"', notIn: ["string", "comment"] },
        { open: "'", close: "'", notIn: ["string", "comment"] },
      ],
      surroundingPairs: [
        { open: "{", close: "}" },
        { open: "[", close: "]" },
        { open: "(", close: ")" },
        { open: '"', close: '"' },
        { open: "'", close: "'" },
      ],
      folding: {
        markers: {
          start: new RegExp("^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/"),
          end: new RegExp("^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/"),
        },
      },
    }),
    (t.language = {
      defaultToken: "",
      tokenPostfix: ".css",
      ws: "[ \t\n\r\f]*",
      identifier:
        "-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",
      brackets: [
        { open: "{", close: "}", token: "delimiter.bracket" },
        { open: "[", close: "]", token: "delimiter.bracket" },
        { open: "(", close: ")", token: "delimiter.parenthesis" },
        { open: "<", close: ">", token: "delimiter.angle" },
      ],
      tokenizer: {
        root: [{ include: "@selector" }],
        selector: [
          { include: "@comments" },
          { include: "@import" },
          { include: "@strings" },
          [
            "[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)",
            { token: "keyword", next: "@keyframedeclaration" },
          ],
          ["[@](page|content|font-face|-moz-document)", { token: "keyword" }],
          [
            "[@](charset|namespace)",
            { token: "keyword", next: "@declarationbody" },
          ],
          [
            "(url-prefix)(\\()",
            [
              "attribute.value",
              { token: "delimiter.parenthesis", next: "@urldeclaration" },
            ],
          ],
          [
            "(url)(\\()",
            [
              "attribute.value",
              { token: "delimiter.parenthesis", next: "@urldeclaration" },
            ],
          ],
          { include: "@selectorname" },
          ["[\\*]", "tag"],
          ["[>\\+,]", "delimiter"],
          ["\\[", { token: "delimiter.bracket", next: "@selectorattribute" }],
          ["{", { token: "delimiter.bracket", next: "@selectorbody" }],
        ],
        selectorbody: [
          { include: "@comments" },
          [
            "[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))",
            "attribute.name",
            "@rulevalue",
          ],
          ["}", { token: "delimiter.bracket", next: "@pop" }],
        ],
        selectorname: [["(\\.|#(?=[^{])|%|(@identifier)|:)+", "tag"]],
        selectorattribute: [
          { include: "@term" },
          ["]", { token: "delimiter.bracket", next: "@pop" }],
        ],
        term: [
          { include: "@comments" },
          [
            "(url-prefix)(\\()",
            [
              "attribute.value",
              { token: "delimiter.parenthesis", next: "@urldeclaration" },
            ],
          ],
          [
            "(url)(\\()",
            [
              "attribute.value",
              { token: "delimiter.parenthesis", next: "@urldeclaration" },
            ],
          ],
          { include: "@functioninvocation" },
          { include: "@numbers" },
          { include: "@name" },
          ["([<>=\\+\\-\\*\\/\\^\\|\\~,])", "delimiter"],
          [",", "delimiter"],
        ],
        rulevalue: [
          { include: "@comments" },
          { include: "@strings" },
          { include: "@term" },
          ["!important", "keyword"],
          [";", "delimiter", "@pop"],
          ["(?=})", { token: "", next: "@pop" }],
        ],
        warndebug: [
          ["[@](warn|debug)", { token: "keyword", next: "@declarationbody" }],
        ],
        import: [
          ["[@](import)", { token: "keyword", next: "@declarationbody" }],
        ],
        urldeclaration: [
          { include: "@strings" },
          ["[^)\r\n]+", "string"],
          ["\\)", { token: "delimiter.parenthesis", next: "@pop" }],
        ],
        parenthizedterm: [
          { include: "@term" },
          ["\\)", { token: "delimiter.parenthesis", next: "@pop" }],
        ],
        declarationbody: [
          { include: "@term" },
          [";", "delimiter", "@pop"],
          ["(?=})", { token: "", next: "@pop" }],
        ],
        comments: [
          ["\\/\\*", "comment", "@comment"],
          ["\\/\\/+.*", "comment"],
        ],
        comment: [
          ["\\*\\/", "comment", "@pop"],
          [/[^*/]+/, "comment"],
          [/./, "comment"],
        ],
        name: [["@identifier", "attribute.value"]],
        numbers: [
          [
            "-?(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?",
            { token: "attribute.value.number", next: "@units" },
          ],
          ["#[0-9a-fA-F_]+(?!\\w)", "attribute.value.hex"],
        ],
        units: [
          [
            "(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?",
            "attribute.value.unit",
            "@pop",
          ],
        ],
        keyframedeclaration: [
          ["@identifier", "attribute.value"],
          ["{", { token: "delimiter.bracket", switchTo: "@keyframebody" }],
        ],
        keyframebody: [
          { include: "@term" },
          ["{", { token: "delimiter.bracket", next: "@selectorbody" }],
          ["}", { token: "delimiter.bracket", next: "@pop" }],
        ],
        functioninvocation: [
          [
            "@identifier\\(",
            { token: "attribute.value", next: "@functionarguments" },
          ],
        ],
        functionarguments: [
          ["\\$@identifier@ws:", "attribute.name"],
          ["[,]", "delimiter"],
          { include: "@term" },
          ["\\)", { token: "attribute.value", next: "@pop" }],
        ],
        strings: [
          ['~?"', { token: "string", next: "@stringenddoublequote" }],
          ["~?'", { token: "string", next: "@stringendquote" }],
        ],
        stringenddoublequote: [
          ["\\\\.", "string"],
          ['"', { token: "string", next: "@pop" }],
          [/[^\\"]+/, "string"],
          [".", "string"],
        ],
        stringendquote: [
          ["\\\\.", "string"],
          ["'", { token: "string", next: "@pop" }],
          [/[^\\']+/, "string"],
          [".", "string"],
        ],
      },
    });
});
